約 3,460,384 件
https://w.atwiki.jp/tw-yumi/pages/6.html
ここに入れて頂きたいのは、私の書いたことについて 2chの方からコメントはもちろんですが、2chの書き込みをしてない人は 名前のところに普段使っているメインキャラクター名を入れられる方は入れて下さい。 なお、私の画像が全て消えた場合、このページにあるコメント全部は抹消するつもりです。 一言だけのコメントや意味が通らない又は、威圧・脅迫・炎上をかける方はご遠慮頂きたく思います。 書いた方も同様な方ということで警察に相談しますのでどうかなさらないようにお願い致しますね。 名前 コメント
https://w.atwiki.jp/android_api/pages/20.html
Android アプリの構成要素 アクティビティ(アプリ内の画面) android.gestureジェスチャーを作成して、認識して、ロードして、保存する android.graphics.drawable視覚の要素を管理 android.graphics.drawable.shapes幾何学的な形を描く android.graphicsグラフィックスツールを提供 android.inputmethodservice入力メソッドコンポーネントを書くためのフレームワーク ブロードキャストレシーバー(ブロードキャストインテントの受信) android.content.resアプリケーション資源にアクセスする。 android.databaseコンテンツプロバイダーを通して返されたデータを探る android.locationAndroidの位置 android.netネットワーク サービス(バックグラウンドで動作するプロセス) android.accessibilityserviceバックグラウンドへ駆け込んで、システムでコールバックを受けます。 android.net.httpアパッチを呼び出し? コンテンツプロバイダ(他のアプリとのやり取りを利用するデータベース) android.content.pmアプリケーションはユーザーの前のデータを元に戻します。 android.databaseコンテンツプロバイダーを通して返されたデータを探る android.net.wifiワイファイの機能性を管理
https://w.atwiki.jp/melodroid/pages/13.html
リンク 「いろいろなリンク先をまとめてみよう」とするページ 目次 公式関連 コミュニティ 未整理 公式関連 Android(Google) Open Handset Allicance Open Embedded Software Foundation(日本) コミュニティ 日本Androidの会 未整理 List of Android devices(Wikipedia)
https://w.atwiki.jp/android/pages/23.html
Eclipseプラグインを使ったAndroidアプリケーションの作成 Eclipseプラグインを使わないAndroidアプリケーションの作成 |######ここまで翻訳######| Implementing Activity Callbacks Opening a New ScreenOpening a Screen Some Intent examples Returning a Result from a Screen Lifetime of the new screen Listening for Button Clicks Configuring General Window Properties Storing and Retrieving StateStoring and Retrieving Larger or More Complex Persistent Data Playing Media Files Listening For and Broadcasting Global Messages, and Setting AlarmsSending the message Receiving the message Other system messages Listening for phone events Setting Alarms Displaying AlertsNormal Alerts AlertDialog Notifications Displaying a Progress Bar Adding Your Application to the Favorites List Adding Items to the Screen MenuAdding Submenus Adding yourself to menus on other applications The offering application Display a Web Page Binding to Data Capture Images from the Phone Camera Handling Expensive Operations in the UI Thread Selecting, Highlighting, or Styling Portions of Text List of Files for an Android Application Eclipseプラグインを使ったAndroidアプリケーションの作成 Android Eclipseプラグインを使用することは、新しいAndroidアプリケーションの作成を始める最も高速で最も簡単な方法です。 プラグインは自動的にあなたのアプリケーションのために正しいプロジェクト構造を生成し、リソースを自動的にコンパイルしてくれます。 Androidアプリケーションの動作原理を理解するために、Androidアプリケーション解体新書を読んでみるのもよいでしょう。 SDKの sample/ フォルダでApiDemosアプリケーションと他のサンプルアプリケーションを見てみることもお勧めします。 最終的にはHello AndroidとNotepadのコードチュートリアルを行うことがEclipseでのAndroid開発を始めるには素敵な方法です。 特にHello Androidチュートリアルを行うことは、Eclipseで新しいAndroidアプリケーションを作成するための優れた導入方法となるでしょう。 Eclipseプラグインを使わないAndroidアプリケーションの作成 |######ここまで翻訳######| This topic describes the manual steps in creating an Android application. Before reading this, you should read Overview of an Android Application to understand the basics of how an Android application works. You might also want to look at the sample applications that ship with Android under the samples/ directory. Here is a list of the basic steps in building an application. 1. Create your required resource files This includes the AndroidManifest.xml global description file, string files that your application needs, and layout files describing your user interface. A full list of optional and required files and syntax details for each is given in File List for an Android Application. 2. Design your user interface See Implementing a UI for details on elements of the Android screen. 3. Implement your Activity (this page) You will create one class/file for each screen in your application. Screens will inherit from an android.app class, typically android.app.Activity for basic screens, android.app.ListActivity for list screens, or android.app.Dialog for dialog boxes. You will implement the required callbacks that let you draw your screen, query data, and commit changes, and also perform any required tasks such as opening additional screens or reading data from the device. Common tasks, such as opening a new screen or reading data from the device, are described below. The list of files you ll need for your application are described in List of Files for an Android Application. 4. Build and install your package. The Android SDK has some nice tools for generating projects and debugging code. Implementing Activity Callbacks Android calls a number of callbacks to let you draw your screen, store data before pausing, and refresh data after closing. You must implement at least some of these methods. See Lifetime of a Screen to learn when and in what order these methods are called. Here are some of the standard types of screen classes that Android provides android.app.Activity - This is a standard screen, with no specialization. android.app.ListActivity - This is a screen that is used to display a list of something. It hosts a ListView object, and exposes methods to let you identify the selected item, receive callbacks when the selected item changes, and perform other list-related actions. android.app.Dialog - This is a small, popup dialog-style window that isn t intended to remain in the history stack. (It is not resizeable or moveable by the user.) Opening a New Screen Your Activity will often need to open another Activity screen as it progresses. This new screen can be part of the same application or part of another application, the new screen can be floating or full screen, it can return a result, and you can decide whether to close this screen and remove it from the history stack when you are done with it, or to keep the screen open in history. These next sections describe all these options. Floating or full? When you open a new screen you can decide whether to make it transparent or floating, or full-screen. The choice of new screen affects the event sequence of events in the old screen (if the new screen obscures the old screen, a different series of events is called in the old screen). See Lifetime of an Activity for details. Transparent or floating windows are implemented in three standard ways Create an app.Dialog class Create an app.AlertDialog class Set the Theme_Dialog theme attribute to @android style/Theme.Dialog in your AndroidManifest.xml file. For example activity class="AddRssItem" android label="Add an item" android theme="@android style/Theme.Dialog"/ Calling startActivity() or startSubActivity() will open a new screen in whatever way it defines itself (if it uses a floating theme it will be floating, otherwise it will be full screen). Opening a Screen When you want to open a new screen, you can either explicitly specify the activity class to open, or you can let the operating system decide which screen to open, based upon the data and various parameters you pass in. A screen is opened by calling startActivity and passing in an Intent object, which specifies the criteria for the handling screen. To specify a specific screen, call Intent.setClass or setClassName with the exact activity class to open. Otherwise, set a variety of values and data, and let Android decide which screen is appropriate to open. Android will find one or zero Activities that match the specified requirements; it will never open multiple activities for a single request. More information on Intents and how Android resolves them to a specific class is given in the Intent topic. Some Intent examples The following snippet loads the com.google.android.samples.Animation1 class, and passes it some arbitrary data. Intent myIntent = new Intent(); myIntent.component = "com.google.android.samples.Animation1"; myIntent.putExtra("com.google.android.samples.SpecialValue", "Hello, Joe!"); // key/value pair, where key needs current package prefix. startActivity(myIntent); The next snippet requests that a Web page be opened by specifying the VIEW action, and a URI data string starting with "http //" schema Intent myIntent = new Intent("android.intent.action.VIEW", "http //www.google.com"); myIntent.putExtra("com.google.android.samples.SpecialValue", "Hello, Joe!"); // key/value pair, where key needs current package prefix. Here is the intent filter from the AndroidManifest.xml file for com.google.android.browser intent-filter action value="android.intent.action.VIEW" / category value="android.intent.category.DEFAULT" / scheme value="http" / scheme value="https" / scheme value="file" / /intent-filter Android defines a number of standard values, for instance the action constants defined by Intent. You can define custom values, but both the caller and handler must use them. See the intent-filter tag description in AndroidManifest.xml File Details for more information on the manifest syntax for the handling application. Returning a Result from a Screen A window can return a result after it closes. This result will be passed back into the calling Activity s onActivityResult() method, which can supply an integer result code, a string of data, and a Bundle of arbitrary data, along with the request code passed to startSubActivity(). Note that you must call the startSubActivity() method that accepts a request code parameter to get this callback. The following code demonstrates opening a new screen and retrieving a result. // Open the new screen. public void onClick(View v){ // Start the activity whose result we want to retrieve. The // result will come back with request code GET_CODE. Intent intent = new Intent(this, com.example.app.ChooseYourBoxer.class); startSubActivity(intent, CHOOSE_FIGHTER); } // Listen for results. protected void onActivityResult(int requestCode, int resultCode, String data, Bundle extras){ // See which child activity is calling us back. switch (resultCode) { case CHOOSE_FIGHTER // This is the standard resultCode that is sent back if the // activity crashed or didn t doesn t supply an explicit result. if (resultCode == RESULT_CANCELED){ myMessageboxFunction("Fight cancelled"); } else { myFightFunction(data, extras); } default break; } } // Class SentResult // Temporary screen to let the user choose something. private OnClickListener mLincolnListener = new OnClickListener(){ public void onClick(View v) { Bundle stats = new Bundle(); stats.putString("height","6\ 4\""); stats.putString("weight", "190 lbs"); stats.putString("reach", "74\""); setResult(RESULT_OK, "Lincoln", stats); finish(); } }; private OnClickListener mWashingtonListener = new OnClickListener() { public void onClick(View v){ Bundle stats = new Bundle(); stats.putString("height","6\ 2\""); stats.putString("weight", "190 lbs"); stats.putString("reach", "73\""); setResult(RESULT_OK, "Washington", Bundle); finish(); } }; Lifetime of the new screen An activity can remove itself from the history stack by calling Activity.finish() on itself, or the activity that opened the screen can call Activity.finishSubActivity() on any screens that it opens to close them. Listening for Button Clicks Button click and other UI event capturing are covered in Listening for UI Notifications on the UI Design page. Configuring General Window Properties You can set a number of general window properties, such as whether to display a title, whether the window is floating, and whether it displays an icon, by calling methods on the Window member of the underlying View object for the window. Examples include calling getWindow().requestFeature() (or the convenience method requestWindowFeature(some_feature)) to hide the title. Here is an example of hiding the title bar //Hide the title bar requestWindowFeature(Window.FEATURE_NO_TITLE); Storing and Retrieving State If your application is dumped from memory because of space concerns, it will lose all user interface state information such as checkbox state and text box values as well as class member values. Android calls Activity.onFreeze before it pauses the application. This method hands in a Bundle that can be used to store name/value pairs that will persist and be handed back to the application even if it is dropped from memory. Android will pass this Bundle back to you when it calls onCreate(). This Bundle only exists while the application is still in the history stack (whether or not it has been removed from memory) and will be lost when the application is finalized. See the topics for onFreeze(Bundle) and onCreate(Bundle) for examples of storing and retrieving state. Read more about the life cycle of an application in Lifetime of an Activity. Storing and Retrieving Larger or More Complex Persistent Data Your application can store files or complex collection objects, and reserve them for private use by itself or other activities in the application, or it can expose its data to all other applications on the device. See Storing, Retrieving, and Exposing Data to learn how to store and retrieve private data, how to store and retrieve common data from the device, and how to expose your private data to other applications. Playing Media Files Please see the document Android Media APIs for more details. Listening For and Broadcasting Global Messages, and Setting Alarms You can create a listening class that can be notified or even instantiated whenever a specific type of system message is sent. The listening classes, called intent receivers, extend IntentReceiver. If you want Android to instantiate the object whenever an appropriate intent notification is sent, define the receiver with a receiver element in the AndroidManifext.xml file. If the caller is expected to instantiate the object in preparation to receive a message, this is not required. The receiver will get a call to their IntentReceiver.onReceiveIntent() method. A receiver can define an intent-filter tag that describes the types of messages it will receive. Just as Android s IntentResolver will look for appropriate Activity matches for a startActivity() call, it will look for any matching Receivers (but it will send the message to all matching receiver, not the "best" match). To send a notification, the caller creates an Intent object and calls Activity.broadcastIntent() with that Intent. Multiple recipients can receive the same message. You can broadcast an Intent message to an intent receiver in any application, not only your own. If the receiving class is not registered using receiver in its manifest, you can dynamically instantiate and register a receiver by calling Context.registerReceiver(). Receivers can include intent filters to specify what kinds of intents they are listening for. Alternatively, if you expect a single known caller to contact a single known receiver, the receiver does not specify an intent filter, and the caller specifies the receiver s class name in the Intent by calling Intent.setClassName() with the recipient s class name. The recipient receives a Context object that refers to its own package, not to the package of the sender. Note If a receiver or broadcaster enforces permissions, your application might need to request permission to send or receive messages from that object. You can request permission by using the uses-permission tag in the manifest. Here is a code snippet of a sender and receiver. This example does not demonstrate registering receivers dynamically. For a full code example, see the AlarmService class in the ApiDemos project. Sending the message // We are sending this to a specific recipient, so we will // only specify the recipient class name. Intent intent = new Intent(this, AlarmReceiver.class); intent.putExtra("message","Wake up."); broadcastIntent(intent); Receiving the message Receiver AndroidManifest.xml (because there is no intent filter child, this class will only receive a broadcast when the receiver class is specified by name, as is done in this example) receiver class=".AlarmReceiver" / Receiver Java code public class AlarmReceiver extends IntentReceiver{ // Display an alert that we ve received a message. @Override public void onReceiveIntent(Context context, Intent intent){ // Send a text notification to the screen. NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); nm.notifyWithText(R.id.alarm, "Alarm!!!", NotificationManager.LENGTH_SHORT, null); } } Other system messages You can listen for other system messages sent by Android as well, such as USB connection/removal messages, SMS arrival messages, and timezone changes. See Intent for a list of broadcast messages to listen for. Messages are marked "Broadcast Action" in the documentation. Listening for phone events The telephony package overview page describes how to register to listen for phone events. Setting Alarms Android provides an AlarmManager service that will let you specify an Intent to send at a designated time. This intent is typically used to start an application at a preset time. (Note If you want to send a notification to a sleeping or running application, use Handler instead.) Displaying Alerts There are two major kinds of alerts that you may display to the user (1) Normal alerts are displayed in response to a user action, such as trying to perform an action that is not allowed. (2) Out-of-band alerts, called notifications, are displayed as a result of something happening in the background, such as the user receiving new e-mail. Normal Alerts Android provides a number of ways for you to show popup notifications to your user as they interact with your application. Class Description app.AlertDialogorContext.showAlert() A popup alert dialog with two buttons (typically OK and Cancel) that take callback handlers. It can be created separately, or launched using the Application helper method Context.showAlert(). See the section after this table for more details. ProgressDialog A dialog box used to indicate progress of an operation with a known progress value or an indeterminate length (setProgress(bool)). See Views Progress Bar in ApiDemos for examples. Activity By setting the theme of an activity to android theme="android style/Theme.Dialog", your activity will take on the appearance of a normal dialog, floating on top of whatever was underneath it. You usually set the theme through the android theme attribute in your AndroidManifest.xml. The advantage of this over Dialog and AlertDialog is that Application has a much better managed lifecycle than dialogs if a dialog goes to the background and is killed, you cannot recapture state, whereas Application exposes a Bundle of saved values in onCreate() to help you maintain state. AlertDialog This is a basic warning dialog box that lets you configure a message, button text, and callback. You can create one by calling the Application helper method Context.showAlert(), as shown here. private Handler mHandler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case ACCEPT_CALL answer(msg.obj); break; case BOUNCE_TO_VOICEMAIL voicemail(msg.obj); break; } } }; private void IncomingMotherInlawCall(Connection c) { String Text; // "Answer" callback. Message acceptMsg = Message.obtain(); acceptMsg.target = mHandler; acceptMsg.what = ACCEPT_CALL; acceptMsg.obj = c.getCall(); // "Cancel" callback. Message rejectMsg = Message.obtain(); rejectMsg.target = mHandler; rejectMsg.what = BOUNCE_TO_VOICEMAIL; rejectMsg.obj = c.getCall(); showAlert(null, "Phyllis is calling", "Answer", acceptMsg, true, rejectMsg); } Notifications Out-of-band alerts should always be displayed using the NotificationManager, which allows you to tell the user about something they may be interested in without disrupting what they are currently doing. A notification can be anything from a brief pop-up box informing the user of the new information, through displaying a persistent icon in the status bar, to vibrating, playing sounds, or flashing lights to get the user s attention. In all cases, the user must explicitly shift their focus to the notification before they can interact with it. The following code demonstrates using NotificationManager to display a basic text popup when a new SMS message arrives in a listening service, and provides the current message count. You can see several more examples in the ApiDemos application, under app/ (named notification*.java). static void setNewMessageIndicator(Context context, int messageCount){ // Get the static global NotificationManager object. NotificationManager nm = NotificationManager.getDefault(); // If we re being called because a new message has been received, // then display an icon and a count. Otherwise, delete the persistent // message. if (messageCount 0) { nm.notifyWithText(myApp.NOTIFICATION_GUID, // ID for this notification. messageCount + " new message" + messageCount 1 ? "s" "", // Text to display. NotificationManager.LENGTH_SHORT); // Show it for a short time only. } } To display a notification in the status bar and have it launch an intent when the user selects it (such as the new text message notification does), call NotificationManager.notify(), and pass in vibration patterns, status bar icons, or Intents to associate with the notification. Displaying a Progress Bar An activity can display a progress bar to notify the user that something is happening. To display a progress bar in a screen, call Activity.requestWindowFeature(Window.FEATURE_PROGRESS). To set the value of the progress bar, call Activity.getWindow().setFeatureInt(Window.FEATURE_PROGRESS, level). Progress bar values are from 0 to 9,999, or set the value to 10,000 to make the progress bar invisible. You can also use the ProgressDialog class, which enables a dialog box with an embedded progress bar to send a "I m working on it" notification to the user. Adding Your Application to the Favorites List You can t. Only a user can add an application to the Favorites list. Adding Items to the Screen Menu Every Android screen has a default menu with default options, such as adding the activity to the favorites menu. You can add your own menu entries to the default menu options by implementing Activity.onCreateOptionsMenu or Activity.onPrepareOptionsMenu(), and adding Item objects to the Menu passed in. To handle clicks implement Activity.onOptionsItemSelected() to handle the click in your Activity class. You may also pass the Item object a handler class that implements the Runnable class (a handler) but this is less efficient and discouraged. An application receives a callback at startup time to enable it to populate its menu. Additionally, it receives callbacks each time the user displays the options menu to let you perform some contextual modifications on the menu. To populate the menu on startup, override Activity.onCreateOptionsMenu; to populate it when the menu is called (somewhat less efficient), you can override Activity.onPrepareOptionsMenu(). Each Activity has its own menu list. Menu items are displayed in the order added, though you can group them as described in the Menu.add documentation. The following code snippet adds three items to the default menu options and handles them through the overridden Activity.onOptionsItemSelected() method. You can show or hide menu items by calling setItemShown() or setGroupShown(). // Called only the first time the options menu is displayed. // Create the menu entries. // Menu adds items in the order shown. @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); // Parameters for menu.add are // group -- Not used here. // id -- Used only when you want to handle and identify the click yourself. // title menu.add(0, 0, "Zoom"); menu.add(0, 1, "Settings"); menu.add(0, 2, "Other"); return true; } // Activity callback that lets your handle the selection in the class. // Return true to indicate that you ve got it, false to indicate // that it should be handled by a declared handler object for that // item (handler objects are discouraged for reasons of efficiency). @Override public boolean onOptionsItemSelected(Menu.Item item){ switch (item.getId()) { case 0 showAlert("Menu Item Clicked", "Zoom", "ok", null, false, null); return true; case 1 showAlert("Menu Item Clicked", "Settings", "ok", null, false, null); return true; case 2 showAlert("Menu Item Clicked", "Other", "ok", null, false, null); return true; } return false; } You can add key shortcuts by calling the Item.setAlphabeticShortcut() or Item.setNumericShortcut() methods, as demonstrated here to add a "C" shortcut to a menu item thisItem.setAlphabeticShortcut(0, c ); Adding Submenus Add a submenu by calling Menu.addSubMenu(), which returns a SubMenu object. You can then add additional items to this menu. Menus can only be one level deep, and you can customize the appearance of the submenu menu item. @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); // Parameters for menu.add are // group -- Not used here. // id -- Used only when you want to handle and identify the click yourself. // title menu.add(0, 0, "Send message"); menu.add(0, 1, "Settings"); menu.add(0, 2, "Local handler"); menu.add(0, 3, "Launch contact picker"); // Add our submenu. SubMenu sub = menu.addSubMenu(1, 4, "Days of the week"); sub.add(0, 5, "Monday"); sub.add(0, 6, "Tuesday"); sub.add(0, 7, "Wednesday"); sub.add(0, 8, "Thursday"); sub.add(0, 9, "Friday"); sub.add(0, 10, "Saturday"); sub.add(0, 11, "Sunday"); return true; } Adding yourself to menus on other applications You can also advertise your Activity s services so that other Activities can add your activity to their own option menu. For example, suppose you implement a new image handling tool that shrinks an image to a smaller size and you would like to offer this as a menu option to any other Activity that handles pictures. To do this, you would exposes your capabilities inside an intent filter in your manifest. If another application that handles photos asks Android for any Activities that can perform actions on pictures, Android will perform intent resolution, find your Activity, and add it to the other Activity s options menu. The offering application The application offering the service must include an intent-filter element in the manifest, inside the activity tag of the offering Activity. The intent filter includes all the details describing what it can do, such as a type element that describes the MIME type of data that it can handle, a custom action value that describes what your handling application can do (this is so that when it receives the Intent on opening it knows what it is expected to do), and most important, include a category filter with the value android.intent.category.ALTERNATIVE and/or android.intent.category.SELECTED_ALTERNATIVE (SELECTED_ALTERNATIVE is used to handle only the currently selected element on the screen, rather than the whole Activity intent. Here s an example of a snip of a manifest that advertises picture shrinking technology for both selected items and the whole screen. activity class="PictureShrink" !-- Handling class -- intent-filter label="Shrink picture" !-- Menu label to display -- action value="com.example.sampleapp.SHRINK_IT" / type value="image/*" / !-- MIME type for generic images -- category value="android.intent.category.ALTERNATIVE " / category value="android.intent.category.SELECTED_ALTERNATIVE" / /intent-filter /activity The menu-displaying application An application that wants to display a menu that includes any additional external services must, first of all, handle its menu creation callback. As part of that callback it creates an intent with the category Intent.ALTERNATIVE_CATEGORY and/or Intent.SELECTED_ALTERNATIVE, the MIME type currently selected, and any other requirements, the same way as it would satisfy an intent filter to open a new Activity. It then calls menu.addIntentOptions() to have Android search for and add any services meeting those requirements. It can optionally add additional custom menu items of its own. You should implement SELECTED_ALTERNATIVE in onPrepareOptionsMenu() rather than onCreateOptionsMenu(), because the user s selection can change after the application is launched. Here s a code snippet demonstrating how a picture application would search for additional services to display on its menu. @Override public boolean onCreateOptionsMenu(Menu menu){ super.onCreateOptionsMenu(menu); // Create an Intent that describes the requirements to fulfill to be included // in our menu. The offering app must include a category value of Intent.ALTERNATIVE_CATEGORY. Intent intent = new Intent(null, getIntent().getData()); intent.addCategory(Intent.ALTERNATIVE_CATEGORY); // Search for, and populate the menu with, acceptable offering applications. menu.addIntentOptions( 0, // Group 0, // Any unique IDs we might care to add. MySampleClass.class.getName(), // Name of the class displaying the menu--here, its this class. null, // No specifics. intent, // Previously created intent that describes our requirements. 0, // No flags. null); // No specifics. return true; } Display a Web Page Use the webkit.WebView object. Binding to Data You can bind a ListView to a set of underlying data by using a shim class called ListAdapter (or a subclass). ListAdapter subclasses bind to a variety of data sources, and expose a common set of methods such as getItem() and getView(), and uses them to pick View items to display in its list. You can extend ListAdapter and override getView() to create your own custom list items. There are essentially only two steps you need to perform to bind to data 1. Create a ListAdapter object and specify its data source 2. Give the ListAdapter to your ListView object. That s it! Here s an example of binding a ListActivity screen to the results from a cursor query. (Note that the setListAdapter() method shown is a convenience method that gets the page s ListView object and calls setAdapter() on it.) // Run a query and get a Cursor pointing to the results. Cursor c = People.query(this.getContentResolver(), null); startManagingCursor(c); // Create the ListAdapter. A SimpleCursorAdapter lets you specify two interesting things // an XML template for your list item, and // The column to map to a specific item, by ID, in your template. ListAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, // Use a template that displays a text view c, // Give the cursor to the list adapter new String[] {People.NAME} , // Map the NAME column in the people database to... new String[] {"text1"}); // The "text1" view defined in the XML template setListAdapter(adapter); See view/List4 in the ApiDemos project for an example of extending ListAdapter for a new data type. Capture Images from the Phone Camera You can hook into the device s camera onto your own Canvas object by using the CameraDevice class. See that class s documentation, and the ApiDemos project s Camera Preview application (Graphics/Camera Preview) for example code. Handling Expensive Operations in the UI Thread Avoid performing long-running operations (such as network I/O) directly in the UI thread — the main thread of an application where the UI is run — or your application may be blocked and become unresponsive. Here is a brief summary of the recommended approach for handling expensive operations 1. Create a Handler object in your UI thread 2. Spawn off worker threads to perform any required expensive operations 3. Post results from a worker thread back to the UI thread s handler either through a Runnable or a Message 4. Update the views on the UI thread as needed The following outline illustrates a typical implementation public class MyActivity extends Activity { [ . . . ] // Need handler for callbacks to the UI thread final Handler mHandler = new Handler(); // Create runnable for posting final Runnable mUpdateResults = new Runnable() { @Override public void run() { updateResultsInUi(); } }; @Override protected void onCreate(Bundle icicle) { super.onCreate(icicle); [ . . . ] } protected void startLongRunningOperation() { // Fire off a thread to do some work that we shouldn t do directly in the UI thread Thread t = new Thread() { public void run() { mResults = doSomethingExpensive(); mHandler.post(mUpdateResults); } }; t.start(); } private void updateResultsInUi() { // Back in the UI thread -- update our UI elements based on the data in mResults [ . . . ] } } For further discussions on this topic, see Developing Responsive Applications and the Handler documentation. Selecting, Highlighting, or Styling Portions of Text You can highlight or style the formatting of strings or substrings of text in a TextView object. There are two ways to do this If you use a string resource, you can add some simple styling, such as bold or italic using HTML notation. So, for example, in res/values/strings.xml you could declare this resource string id="@+id/styled_welcome_message" We are b i so /i /b glad to see you. /string /resources To style text on the fly, or to add highlighting or more complex styling, you must use the Spannable object as described next. To style text on the fly, you must make sure the TextView is using Spannable storage for the text (this will always be true if the TextView is an EditText), retrieve its text with getText(), and call setSpan(Object, int, int, int), passing in a new style class from the android.text.style package and the selection range. The following code snippet demonstrates creating a string with a highlighted section, italic section, and bold section, and adding it to an EditText object. // Get our EditText object. EditText vw = (EditText)findViewById(R.id.text); // Set the EditText s text. vw.setText("Italic, highlighted, bold."); // If this were just a TextView, we could do // vw.setText("Italic, highlighted, bold.", TextView.BufferType.SPANNABLE); // to force it to use Spannable storage so styles can be attached. // Or we could specify that in the XML. // Get the EditText s internal text storage Spannable str = vw.getText(); // Create our span sections, and assign a format to each. str.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 0, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); str.setSpan(new BackgroundColorSpan(0xFFFFFF00), 8, 19, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); str.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 21, str.length() - 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); List of Files for an Android Application The following list describes the structure and files of an Android application. Many of these files can be built for you (or stubbed out) by the activityCreator.py application shipped in the tools/ menu of the SDK. See Building an Android Sample Application for more information on using activityCreator.py. MyApp/ AndroidManifest.xml (required) Advertises the screens that this application provides, where they can be launched (from the main program menu or elsewhere), any content providers it implements and what kind of data they handle, where the implementation classes are, and other application-wide information. Syntax details for this file are described in AndroidManifest.xml. src//myPackagePath/.../MyClass.java (required) This folder holds all the source code files for your application, inside the appropriate package subfolders. res/ (required) This folder holds all the resources for your application. Resources are external data files or description files that are compiled into your code at build time. Files in different folders are compiled differently, so you must put the proper resource into the proper folder. (See Resources for details.) anim/animation1.xml... (optional) Holds any animation XML description files that the application uses. The format of these files is described in Resources. drawable/some_picture.pngsome_stretchable.9.pngsome_background.xml... (optional) Zero or more files that will be compiled to android.graphics.drawable resources. Files can be image files (png, gif, or other) or XML files describing other graphics such as bitmaps, stretchable bitmaps, or gradients. Supported bitmap file formats are PNG (preferred), JPG, and GIF (discouraged), as well as the custom 9-patch stretchable bitmap format. These formats are described in Resources. layout/screen_1_layout.xml... (optional) Holds all the XML files describing screens or parts of screens. Although you could create a screen in Java, defining them in XML files is typically easier. A layout file is similar in concept to an HTML file that describes the screen layout and components. See Implementing a UI for more information about designing screens, and Layout Resources for the syntax of these files. values/arraysclasses.xmlcolors.xmldimens.xmlstrings.xmlstyles.xmlvalues.xml (optional) XML files describing additional resources such as strings, colors, and styles. The naming, quantity, and number of these files are not enforced--any XML file is compiled, but these are the standard names given to these files. However, the syntax of these files is prescribed by Android, and described in Resources. xml/ (optional) XML files that can be read at run time on the device. raw/ (optional) Any files to be copied directly to the device.
https://w.atwiki.jp/android/pages/151.html
Eclipseプラグインを使ったAndroidアプリケーションの作成 Eclipseプラグインを使わないAndroidアプリケーションの作成 |######ここまで翻訳######| Implementing Activity Callbacks Opening a New ScreenOpening a Screen Some Intent examples Returning a Result from a Screen Lifetime of the new screen Listening for Button Clicks Configuring General Window Properties Storing and Retrieving StateStoring and Retrieving Larger or More Complex Persistent Data Playing Media Files Listening For and Broadcasting Global Messages, and Setting AlarmsSending the message Receiving the message Other system messages Listening for phone events Setting Alarms Displaying AlertsNormal Alerts AlertDialog Notifications Displaying a Progress Bar Adding Your Application to the Favorites List Adding Items to the Screen MenuAdding Submenus Adding yourself to menus on other applications The offering application Display a Web Page Binding to Data Capture Images from the Phone Camera Handling Expensive Operations in the UI Thread Selecting, Highlighting, or Styling Portions of Text List of Files for an Android Application Eclipseプラグインを使ったAndroidアプリケーションの作成 Android Eclipseプラグインを使用することは、新しいAndroidアプリケーションの作成を始める最も高速で最も簡単な方法です。 プラグインは自動的にあなたのアプリケーションのために正しいプロジェクト構造を生成し、リソースを自動的にコンパイルしてくれます。 Androidアプリケーションの動作原理を理解するために、Androidアプリケーション解体新書を読んでみるのもよいでしょう。 SDKの sample/ フォルダでApiDemosアプリケーションと他のサンプルアプリケーションを見てみることもお勧めします。 最終的にはHello AndroidとNotepadのコードチュートリアルを行うことがEclipseでのAndroid開発を始めるには素敵な方法です。 特にHello Androidチュートリアルを行うことは、Eclipseで新しいAndroidアプリケーションを作成するための優れた導入方法となるでしょう。 Eclipseプラグインを使わないAndroidアプリケーションの作成 |######ここまで翻訳######| This topic describes the manual steps in creating an Android application. Before reading this, you should read Overview of an Android Application to understand the basics of how an Android application works. You might also want to look at the sample applications that ship with Android under the samples/ directory. Here is a list of the basic steps in building an application. 1. Create your required resource files This includes the AndroidManifest.xml global description file, string files that your application needs, and layout files describing your user interface. A full list of optional and required files and syntax details for each is given in File List for an Android Application. 2. Design your user interface See Implementing a UI for details on elements of the Android screen. 3. Implement your Activity (this page) You will create one class/file for each screen in your application. Screens will inherit from an android.app class, typically android.app.Activity for basic screens, android.app.ListActivity for list screens, or android.app.Dialog for dialog boxes. You will implement the required callbacks that let you draw your screen, query data, and commit changes, and also perform any required tasks such as opening additional screens or reading data from the device. Common tasks, such as opening a new screen or reading data from the device, are described below. The list of files you ll need for your application are described in List of Files for an Android Application. 4. Build and install your package. The Android SDK has some nice tools for generating projects and debugging code. Implementing Activity Callbacks Android calls a number of callbacks to let you draw your screen, store data before pausing, and refresh data after closing. You must implement at least some of these methods. See Lifetime of a Screen to learn when and in what order these methods are called. Here are some of the standard types of screen classes that Android provides android.app.Activity - This is a standard screen, with no specialization. android.app.ListActivity - This is a screen that is used to display a list of something. It hosts a ListView object, and exposes methods to let you identify the selected item, receive callbacks when the selected item changes, and perform other list-related actions. android.app.Dialog - This is a small, popup dialog-style window that isn t intended to remain in the history stack. (It is not resizeable or moveable by the user.) Opening a New Screen Your Activity will often need to open another Activity screen as it progresses. This new screen can be part of the same application or part of another application, the new screen can be floating or full screen, it can return a result, and you can decide whether to close this screen and remove it from the history stack when you are done with it, or to keep the screen open in history. These next sections describe all these options. Floating or full? When you open a new screen you can decide whether to make it transparent or floating, or full-screen. The choice of new screen affects the event sequence of events in the old screen (if the new screen obscures the old screen, a different series of events is called in the old screen). See Lifetime of an Activity for details. Transparent or floating windows are implemented in three standard ways Create an app.Dialog class Create an app.AlertDialog class Set the Theme_Dialog theme attribute to @android style/Theme.Dialog in your AndroidManifest.xml file. For example activity class="AddRssItem" android label="Add an item" android theme="@android style/Theme.Dialog"/ Calling startActivity() or startSubActivity() will open a new screen in whatever way it defines itself (if it uses a floating theme it will be floating, otherwise it will be full screen). Opening a Screen When you want to open a new screen, you can either explicitly specify the activity class to open, or you can let the operating system decide which screen to open, based upon the data and various parameters you pass in. A screen is opened by calling startActivity and passing in an Intent object, which specifies the criteria for the handling screen. To specify a specific screen, call Intent.setClass or setClassName with the exact activity class to open. Otherwise, set a variety of values and data, and let Android decide which screen is appropriate to open. Android will find one or zero Activities that match the specified requirements; it will never open multiple activities for a single request. More information on Intents and how Android resolves them to a specific class is given in the Intent topic. Some Intent examples The following snippet loads the com.google.android.samples.Animation1 class, and passes it some arbitrary data. Intent myIntent = new Intent(); myIntent.component = "com.google.android.samples.Animation1"; myIntent.putExtra("com.google.android.samples.SpecialValue", "Hello, Joe!"); // key/value pair, where key needs current package prefix. startActivity(myIntent); The next snippet requests that a Web page be opened by specifying the VIEW action, and a URI data string starting with "http //" schema Intent myIntent = new Intent("android.intent.action.VIEW", "http //www.google.com"); myIntent.putExtra("com.google.android.samples.SpecialValue", "Hello, Joe!"); // key/value pair, where key needs current package prefix. Here is the intent filter from the AndroidManifest.xml file for com.google.android.browser intent-filter action value="android.intent.action.VIEW" / category value="android.intent.category.DEFAULT" / scheme value="http" / scheme value="https" / scheme value="file" / /intent-filter Android defines a number of standard values, for instance the action constants defined by Intent. You can define custom values, but both the caller and handler must use them. See the intent-filter tag description in AndroidManifest.xml File Details for more information on the manifest syntax for the handling application. Returning a Result from a Screen A window can return a result after it closes. This result will be passed back into the calling Activity s onActivityResult() method, which can supply an integer result code, a string of data, and a Bundle of arbitrary data, along with the request code passed to startSubActivity(). Note that you must call the startSubActivity() method that accepts a request code parameter to get this callback. The following code demonstrates opening a new screen and retrieving a result. // Open the new screen. public void onClick(View v){ // Start the activity whose result we want to retrieve. The // result will come back with request code GET_CODE. Intent intent = new Intent(this, com.example.app.ChooseYourBoxer.class); startSubActivity(intent, CHOOSE_FIGHTER); } // Listen for results. protected void onActivityResult(int requestCode, int resultCode, String data, Bundle extras){ // See which child activity is calling us back. switch (resultCode) { case CHOOSE_FIGHTER // This is the standard resultCode that is sent back if the // activity crashed or didn t doesn t supply an explicit result. if (resultCode == RESULT_CANCELED){ myMessageboxFunction("Fight cancelled"); } else { myFightFunction(data, extras); } default break; } } // Class SentResult // Temporary screen to let the user choose something. private OnClickListener mLincolnListener = new OnClickListener(){ public void onClick(View v) { Bundle stats = new Bundle(); stats.putString("height","6\ 4\""); stats.putString("weight", "190 lbs"); stats.putString("reach", "74\""); setResult(RESULT_OK, "Lincoln", stats); finish(); } }; private OnClickListener mWashingtonListener = new OnClickListener() { public void onClick(View v){ Bundle stats = new Bundle(); stats.putString("height","6\ 2\""); stats.putString("weight", "190 lbs"); stats.putString("reach", "73\""); setResult(RESULT_OK, "Washington", Bundle); finish(); } }; Lifetime of the new screen An activity can remove itself from the history stack by calling Activity.finish() on itself, or the activity that opened the screen can call Activity.finishSubActivity() on any screens that it opens to close them. Listening for Button Clicks Button click and other UI event capturing are covered in Listening for UI Notifications on the UI Design page. Configuring General Window Properties You can set a number of general window properties, such as whether to display a title, whether the window is floating, and whether it displays an icon, by calling methods on the Window member of the underlying View object for the window. Examples include calling getWindow().requestFeature() (or the convenience method requestWindowFeature(some_feature)) to hide the title. Here is an example of hiding the title bar //Hide the title bar requestWindowFeature(Window.FEATURE_NO_TITLE); Storing and Retrieving State If your application is dumped from memory because of space concerns, it will lose all user interface state information such as checkbox state and text box values as well as class member values. Android calls Activity.onFreeze before it pauses the application. This method hands in a Bundle that can be used to store name/value pairs that will persist and be handed back to the application even if it is dropped from memory. Android will pass this Bundle back to you when it calls onCreate(). This Bundle only exists while the application is still in the history stack (whether or not it has been removed from memory) and will be lost when the application is finalized. See the topics for onFreeze(Bundle) and onCreate(Bundle) for examples of storing and retrieving state. Read more about the life cycle of an application in Lifetime of an Activity. Storing and Retrieving Larger or More Complex Persistent Data Your application can store files or complex collection objects, and reserve them for private use by itself or other activities in the application, or it can expose its data to all other applications on the device. See Storing, Retrieving, and Exposing Data to learn how to store and retrieve private data, how to store and retrieve common data from the device, and how to expose your private data to other applications. Playing Media Files Please see the document Android Media APIs for more details. Listening For and Broadcasting Global Messages, and Setting Alarms You can create a listening class that can be notified or even instantiated whenever a specific type of system message is sent. The listening classes, called intent receivers, extend IntentReceiver. If you want Android to instantiate the object whenever an appropriate intent notification is sent, define the receiver with a receiver element in the AndroidManifext.xml file. If the caller is expected to instantiate the object in preparation to receive a message, this is not required. The receiver will get a call to their IntentReceiver.onReceiveIntent() method. A receiver can define an intent-filter tag that describes the types of messages it will receive. Just as Android s IntentResolver will look for appropriate Activity matches for a startActivity() call, it will look for any matching Receivers (but it will send the message to all matching receiver, not the "best" match). To send a notification, the caller creates an Intent object and calls Activity.broadcastIntent() with that Intent. Multiple recipients can receive the same message. You can broadcast an Intent message to an intent receiver in any application, not only your own. If the receiving class is not registered using receiver in its manifest, you can dynamically instantiate and register a receiver by calling Context.registerReceiver(). Receivers can include intent filters to specify what kinds of intents they are listening for. Alternatively, if you expect a single known caller to contact a single known receiver, the receiver does not specify an intent filter, and the caller specifies the receiver s class name in the Intent by calling Intent.setClassName() with the recipient s class name. The recipient receives a Context object that refers to its own package, not to the package of the sender. Note If a receiver or broadcaster enforces permissions, your application might need to request permission to send or receive messages from that object. You can request permission by using the uses-permission tag in the manifest. Here is a code snippet of a sender and receiver. This example does not demonstrate registering receivers dynamically. For a full code example, see the AlarmService class in the ApiDemos project. Sending the message // We are sending this to a specific recipient, so we will // only specify the recipient class name. Intent intent = new Intent(this, AlarmReceiver.class); intent.putExtra("message","Wake up."); broadcastIntent(intent); Receiving the message Receiver AndroidManifest.xml (because there is no intent filter child, this class will only receive a broadcast when the receiver class is specified by name, as is done in this example) receiver class=".AlarmReceiver" / Receiver Java code public class AlarmReceiver extends IntentReceiver{ // Display an alert that we ve received a message. @Override public void onReceiveIntent(Context context, Intent intent){ // Send a text notification to the screen. NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); nm.notifyWithText(R.id.alarm, "Alarm!!!", NotificationManager.LENGTH_SHORT, null); } } Other system messages You can listen for other system messages sent by Android as well, such as USB connection/removal messages, SMS arrival messages, and timezone changes. See Intent for a list of broadcast messages to listen for. Messages are marked "Broadcast Action" in the documentation. Listening for phone events The telephony package overview page describes how to register to listen for phone events. Setting Alarms Android provides an AlarmManager service that will let you specify an Intent to send at a designated time. This intent is typically used to start an application at a preset time. (Note If you want to send a notification to a sleeping or running application, use Handler instead.) Displaying Alerts There are two major kinds of alerts that you may display to the user (1) Normal alerts are displayed in response to a user action, such as trying to perform an action that is not allowed. (2) Out-of-band alerts, called notifications, are displayed as a result of something happening in the background, such as the user receiving new e-mail. Normal Alerts Android provides a number of ways for you to show popup notifications to your user as they interact with your application. Class Description app.AlertDialogorContext.showAlert() A popup alert dialog with two buttons (typically OK and Cancel) that take callback handlers. It can be created separately, or launched using the Application helper method Context.showAlert(). See the section after this table for more details. ProgressDialog A dialog box used to indicate progress of an operation with a known progress value or an indeterminate length (setProgress(bool)). See Views Progress Bar in ApiDemos for examples. Activity By setting the theme of an activity to android theme="android style/Theme.Dialog", your activity will take on the appearance of a normal dialog, floating on top of whatever was underneath it. You usually set the theme through the android theme attribute in your AndroidManifest.xml. The advantage of this over Dialog and AlertDialog is that Application has a much better managed lifecycle than dialogs if a dialog goes to the background and is killed, you cannot recapture state, whereas Application exposes a Bundle of saved values in onCreate() to help you maintain state. AlertDialog This is a basic warning dialog box that lets you configure a message, button text, and callback. You can create one by calling the Application helper method Context.showAlert(), as shown here. private Handler mHandler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case ACCEPT_CALL answer(msg.obj); break; case BOUNCE_TO_VOICEMAIL voicemail(msg.obj); break; } } }; private void IncomingMotherInlawCall(Connection c) { String Text; // "Answer" callback. Message acceptMsg = Message.obtain(); acceptMsg.target = mHandler; acceptMsg.what = ACCEPT_CALL; acceptMsg.obj = c.getCall(); // "Cancel" callback. Message rejectMsg = Message.obtain(); rejectMsg.target = mHandler; rejectMsg.what = BOUNCE_TO_VOICEMAIL; rejectMsg.obj = c.getCall(); showAlert(null, "Phyllis is calling", "Answer", acceptMsg, true, rejectMsg); } Notifications Out-of-band alerts should always be displayed using the NotificationManager, which allows you to tell the user about something they may be interested in without disrupting what they are currently doing. A notification can be anything from a brief pop-up box informing the user of the new information, through displaying a persistent icon in the status bar, to vibrating, playing sounds, or flashing lights to get the user s attention. In all cases, the user must explicitly shift their focus to the notification before they can interact with it. The following code demonstrates using NotificationManager to display a basic text popup when a new SMS message arrives in a listening service, and provides the current message count. You can see several more examples in the ApiDemos application, under app/ (named notification*.java). static void setNewMessageIndicator(Context context, int messageCount){ // Get the static global NotificationManager object. NotificationManager nm = NotificationManager.getDefault(); // If we re being called because a new message has been received, // then display an icon and a count. Otherwise, delete the persistent // message. if (messageCount 0) { nm.notifyWithText(myApp.NOTIFICATION_GUID, // ID for this notification. messageCount + " new message" + messageCount 1 ? "s" "", // Text to display. NotificationManager.LENGTH_SHORT); // Show it for a short time only. } } To display a notification in the status bar and have it launch an intent when the user selects it (such as the new text message notification does), call NotificationManager.notify(), and pass in vibration patterns, status bar icons, or Intents to associate with the notification. Displaying a Progress Bar An activity can display a progress bar to notify the user that something is happening. To display a progress bar in a screen, call Activity.requestWindowFeature(Window.FEATURE_PROGRESS). To set the value of the progress bar, call Activity.getWindow().setFeatureInt(Window.FEATURE_PROGRESS, level). Progress bar values are from 0 to 9,999, or set the value to 10,000 to make the progress bar invisible. You can also use the ProgressDialog class, which enables a dialog box with an embedded progress bar to send a "I m working on it" notification to the user. Adding Your Application to the Favorites List You can t. Only a user can add an application to the Favorites list. Adding Items to the Screen Menu Every Android screen has a default menu with default options, such as adding the activity to the favorites menu. You can add your own menu entries to the default menu options by implementing Activity.onCreateOptionsMenu or Activity.onPrepareOptionsMenu(), and adding Item objects to the Menu passed in. To handle clicks implement Activity.onOptionsItemSelected() to handle the click in your Activity class. You may also pass the Item object a handler class that implements the Runnable class (a handler) but this is less efficient and discouraged. An application receives a callback at startup time to enable it to populate its menu. Additionally, it receives callbacks each time the user displays the options menu to let you perform some contextual modifications on the menu. To populate the menu on startup, override Activity.onCreateOptionsMenu; to populate it when the menu is called (somewhat less efficient), you can override Activity.onPrepareOptionsMenu(). Each Activity has its own menu list. Menu items are displayed in the order added, though you can group them as described in the Menu.add documentation. The following code snippet adds three items to the default menu options and handles them through the overridden Activity.onOptionsItemSelected() method. You can show or hide menu items by calling setItemShown() or setGroupShown(). // Called only the first time the options menu is displayed. // Create the menu entries. // Menu adds items in the order shown. @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); // Parameters for menu.add are // group -- Not used here. // id -- Used only when you want to handle and identify the click yourself. // title menu.add(0, 0, "Zoom"); menu.add(0, 1, "Settings"); menu.add(0, 2, "Other"); return true; } // Activity callback that lets your handle the selection in the class. // Return true to indicate that you ve got it, false to indicate // that it should be handled by a declared handler object for that // item (handler objects are discouraged for reasons of efficiency). @Override public boolean onOptionsItemSelected(Menu.Item item){ switch (item.getId()) { case 0 showAlert("Menu Item Clicked", "Zoom", "ok", null, false, null); return true; case 1 showAlert("Menu Item Clicked", "Settings", "ok", null, false, null); return true; case 2 showAlert("Menu Item Clicked", "Other", "ok", null, false, null); return true; } return false; } You can add key shortcuts by calling the Item.setAlphabeticShortcut() or Item.setNumericShortcut() methods, as demonstrated here to add a "C" shortcut to a menu item thisItem.setAlphabeticShortcut(0, c ); Adding Submenus Add a submenu by calling Menu.addSubMenu(), which returns a SubMenu object. You can then add additional items to this menu. Menus can only be one level deep, and you can customize the appearance of the submenu menu item. @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); // Parameters for menu.add are // group -- Not used here. // id -- Used only when you want to handle and identify the click yourself. // title menu.add(0, 0, "Send message"); menu.add(0, 1, "Settings"); menu.add(0, 2, "Local handler"); menu.add(0, 3, "Launch contact picker"); // Add our submenu. SubMenu sub = menu.addSubMenu(1, 4, "Days of the week"); sub.add(0, 5, "Monday"); sub.add(0, 6, "Tuesday"); sub.add(0, 7, "Wednesday"); sub.add(0, 8, "Thursday"); sub.add(0, 9, "Friday"); sub.add(0, 10, "Saturday"); sub.add(0, 11, "Sunday"); return true; } Adding yourself to menus on other applications You can also advertise your Activity s services so that other Activities can add your activity to their own option menu. For example, suppose you implement a new image handling tool that shrinks an image to a smaller size and you would like to offer this as a menu option to any other Activity that handles pictures. To do this, you would exposes your capabilities inside an intent filter in your manifest. If another application that handles photos asks Android for any Activities that can perform actions on pictures, Android will perform intent resolution, find your Activity, and add it to the other Activity s options menu. The offering application The application offering the service must include an intent-filter element in the manifest, inside the activity tag of the offering Activity. The intent filter includes all the details describing what it can do, such as a type element that describes the MIME type of data that it can handle, a custom action value that describes what your handling application can do (this is so that when it receives the Intent on opening it knows what it is expected to do), and most important, include a category filter with the value android.intent.category.ALTERNATIVE and/or android.intent.category.SELECTED_ALTERNATIVE (SELECTED_ALTERNATIVE is used to handle only the currently selected element on the screen, rather than the whole Activity intent. Here s an example of a snip of a manifest that advertises picture shrinking technology for both selected items and the whole screen. activity class="PictureShrink" !-- Handling class -- intent-filter label="Shrink picture" !-- Menu label to display -- action value="com.example.sampleapp.SHRINK_IT" / type value="image/*" / !-- MIME type for generic images -- category value="android.intent.category.ALTERNATIVE " / category value="android.intent.category.SELECTED_ALTERNATIVE" / /intent-filter /activity The menu-displaying application An application that wants to display a menu that includes any additional external services must, first of all, handle its menu creation callback. As part of that callback it creates an intent with the category Intent.ALTERNATIVE_CATEGORY and/or Intent.SELECTED_ALTERNATIVE, the MIME type currently selected, and any other requirements, the same way as it would satisfy an intent filter to open a new Activity. It then calls menu.addIntentOptions() to have Android search for and add any services meeting those requirements. It can optionally add additional custom menu items of its own. You should implement SELECTED_ALTERNATIVE in onPrepareOptionsMenu() rather than onCreateOptionsMenu(), because the user s selection can change after the application is launched. Here s a code snippet demonstrating how a picture application would search for additional services to display on its menu. @Override public boolean onCreateOptionsMenu(Menu menu){ super.onCreateOptionsMenu(menu); // Create an Intent that describes the requirements to fulfill to be included // in our menu. The offering app must include a category value of Intent.ALTERNATIVE_CATEGORY. Intent intent = new Intent(null, getIntent().getData()); intent.addCategory(Intent.ALTERNATIVE_CATEGORY); // Search for, and populate the menu with, acceptable offering applications. menu.addIntentOptions( 0, // Group 0, // Any unique IDs we might care to add. MySampleClass.class.getName(), // Name of the class displaying the menu--here, its this class. null, // No specifics. intent, // Previously created intent that describes our requirements. 0, // No flags. null); // No specifics. return true; } Display a Web Page Use the webkit.WebView object. Binding to Data You can bind a ListView to a set of underlying data by using a shim class called ListAdapter (or a subclass). ListAdapter subclasses bind to a variety of data sources, and expose a common set of methods such as getItem() and getView(), and uses them to pick View items to display in its list. You can extend ListAdapter and override getView() to create your own custom list items. There are essentially only two steps you need to perform to bind to data 1. Create a ListAdapter object and specify its data source 2. Give the ListAdapter to your ListView object. That s it! Here s an example of binding a ListActivity screen to the results from a cursor query. (Note that the setListAdapter() method shown is a convenience method that gets the page s ListView object and calls setAdapter() on it.) // Run a query and get a Cursor pointing to the results. Cursor c = People.query(this.getContentResolver(), null); startManagingCursor(c); // Create the ListAdapter. A SimpleCursorAdapter lets you specify two interesting things // an XML template for your list item, and // The column to map to a specific item, by ID, in your template. ListAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, // Use a template that displays a text view c, // Give the cursor to the list adapter new String[] {People.NAME} , // Map the NAME column in the people database to... new String[] {"text1"}); // The "text1" view defined in the XML template setListAdapter(adapter); See view/List4 in the ApiDemos project for an example of extending ListAdapter for a new data type. Capture Images from the Phone Camera You can hook into the device s camera onto your own Canvas object by using the CameraDevice class. See that class s documentation, and the ApiDemos project s Camera Preview application (Graphics/Camera Preview) for example code. Handling Expensive Operations in the UI Thread Avoid performing long-running operations (such as network I/O) directly in the UI thread — the main thread of an application where the UI is run — or your application may be blocked and become unresponsive. Here is a brief summary of the recommended approach for handling expensive operations 1. Create a Handler object in your UI thread 2. Spawn off worker threads to perform any required expensive operations 3. Post results from a worker thread back to the UI thread s handler either through a Runnable or a Message 4. Update the views on the UI thread as needed The following outline illustrates a typical implementation public class MyActivity extends Activity { [ . . . ] // Need handler for callbacks to the UI thread final Handler mHandler = new Handler(); // Create runnable for posting final Runnable mUpdateResults = new Runnable() { @Override public void run() { updateResultsInUi(); } }; @Override protected void onCreate(Bundle icicle) { super.onCreate(icicle); [ . . . ] } protected void startLongRunningOperation() { // Fire off a thread to do some work that we shouldn t do directly in the UI thread Thread t = new Thread() { public void run() { mResults = doSomethingExpensive(); mHandler.post(mUpdateResults); } }; t.start(); } private void updateResultsInUi() { // Back in the UI thread -- update our UI elements based on the data in mResults [ . . . ] } } For further discussions on this topic, see Developing Responsive Applications and the Handler documentation. Selecting, Highlighting, or Styling Portions of Text You can highlight or style the formatting of strings or substrings of text in a TextView object. There are two ways to do this If you use a string resource, you can add some simple styling, such as bold or italic using HTML notation. So, for example, in res/values/strings.xml you could declare this resource string id="@+id/styled_welcome_message" We are b i so /i /b glad to see you. /string /resources To style text on the fly, or to add highlighting or more complex styling, you must use the Spannable object as described next. To style text on the fly, you must make sure the TextView is using Spannable storage for the text (this will always be true if the TextView is an EditText), retrieve its text with getText(), and call setSpan(Object, int, int, int), passing in a new style class from the android.text.style package and the selection range. The following code snippet demonstrates creating a string with a highlighted section, italic section, and bold section, and adding it to an EditText object. // Get our EditText object. EditText vw = (EditText)findViewById(R.id.text); // Set the EditText s text. vw.setText("Italic, highlighted, bold."); // If this were just a TextView, we could do // vw.setText("Italic, highlighted, bold.", TextView.BufferType.SPANNABLE); // to force it to use Spannable storage so styles can be attached. // Or we could specify that in the XML. // Get the EditText s internal text storage Spannable str = vw.getText(); // Create our span sections, and assign a format to each. str.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 0, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); str.setSpan(new BackgroundColorSpan(0xFFFFFF00), 8, 19, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); str.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 21, str.length() - 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); List of Files for an Android Application The following list describes the structure and files of an Android application. Many of these files can be built for you (or stubbed out) by the activityCreator.py application shipped in the tools/ menu of the SDK. See Building an Android Sample Application for more information on using activityCreator.py. MyApp/ AndroidManifest.xml (required) Advertises the screens that this application provides, where they can be launched (from the main program menu or elsewhere), any content providers it implements and what kind of data they handle, where the implementation classes are, and other application-wide information. Syntax details for this file are described in AndroidManifest.xml. src//myPackagePath/.../MyClass.java (required) This folder holds all the source code files for your application, inside the appropriate package subfolders. res/ (required) This folder holds all the resources for your application. Resources are external data files or description files that are compiled into your code at build time. Files in different folders are compiled differently, so you must put the proper resource into the proper folder. (See Resources for details.) anim/animation1.xml... (optional) Holds any animation XML description files that the application uses. The format of these files is described in Resources. drawable/some_picture.pngsome_stretchable.9.pngsome_background.xml... (optional) Zero or more files that will be compiled to android.graphics.drawable resources. Files can be image files (png, gif, or other) or XML files describing other graphics such as bitmaps, stretchable bitmaps, or gradients. Supported bitmap file formats are PNG (preferred), JPG, and GIF (discouraged), as well as the custom 9-patch stretchable bitmap format. These formats are described in Resources. layout/screen_1_layout.xml... (optional) Holds all the XML files describing screens or parts of screens. Although you could create a screen in Java, defining them in XML files is typically easier. A layout file is similar in concept to an HTML file that describes the screen layout and components. See Implementing a UI for more information about designing screens, and Layout Resources for the syntax of these files. values/arraysclasses.xmlcolors.xmldimens.xmlstrings.xmlstyles.xmlvalues.xml (optional) XML files describing additional resources such as strings, colors, and styles. The naming, quantity, and number of these files are not enforced--any XML file is compiled, but these are the standard names given to these files. However, the syntax of these files is prescribed by Android, and described in Resources. xml/ (optional) XML files that can be read at run time on the device. raw/ (optional) Any files to be copied directly to the device.
https://w.atwiki.jp/ohden/pages/338.html
debugしたい時のつなぎ方 環境 Android SDK r8,r9 Android NDK r5 ■USB接続(windows) driver download Android SDKが入ったWindowsで[スタート]-[Android SDK Tools]-[SDK Manager]を選択。 『Android SDK and AVD Manager』が起動したら、左のListから『Available packages』を選択。 右側にリストが表示されるのでtreeをたどって行き、[Third party Add-ons]-[Google Inc. add-ons (dl-ssl.google.com)]-[Google Usb Driver package, revision 4]にcheckを入れて、『Install Selected』を押下。 『Accept』を選んで、『Install』押下。 左のリストから『Installed packages』を選択してリストに『Google Usb Driver package, revision 4』が追加されてることを確認。 Android SDKのinstall dirに『google-usb_driver』ってdirができる。 e.g.) デフォなら C \Program Files\Android\android-sdk-windows\google-usb_driver driver install 上記dirが確認できたらAndroid端末を接続。 PnPウィザードが立ち上がるので、以下のようにドライバを指定。 ※WindowsXPの場合 デフォルトのInstall先なら『C \Program Files\Android\android-sdk-windows\google-usb_driver』を指定。 接続 ■USB接続(Linux) http //developer.android.com/intl/ja/guide/developing/device.html ■無線LAN まず、以下の環境を満たすこと。 上記のUSBドライバinstallを実施済み 無線LANでネットワークに接続済み 無線LAN接続で割り振られてるIP addressを確認しておくこと。 IP addressは[設定]-[無線とネットワーク]-[Wi-Fi設定]を表示して、出てきた任意のWi-Fiネットワークをタップすることで表示される。 以後の設定では無線LANで『192.168.1.111』が割り振られてるとして進めて行く。 環境を用意したら、 ①PCにAndroid端末を接続。USB機器として認識されることを確認。 端末起動前にUSB接続してるとおかしくなることがあるっぽぃ。確実に起動してから接続することをおすすめする。 正しく接続されていれば、デバイスマネージャで上図のように表示される。 ②コマンドプロンプトを起動して以下のコマンドを実施。 adb devices * daemon not running. starting it now on port 5037 ** daemon started successfully *List of devices attached0123456789ABCDEF device tcpip接続時に使用する任意のportを設定。今回はとりあえず『5555』を使う。 adb -d tcpip 5555 restarting in TCP mode port 5555 先に調べておいたAndroid端末のIP addressにさっき指定したport番号をくっつけて以下のように記述。 adb connect 192.168.1.111 5555 connected to 192.168.1.111 5555 adb devices List of devices attached192.168.1.111 5555 device ココまで表示されたら adb shell ll -la とか打つ。すると端末のroot dirのfile一覧が表示されるはず。 drwxrwx--- system cache 2011-03-07 17 56 cachedr-x------ root root 2011-03-08 16 43 configlrwxrwxrwx root root 2011-03-08 16 43 d - /sys/kernel/debugdrwxrwx--x system system 2011-02-14 15 22 data-rwxr--r-- root root 118 2010-03-13 12 47 default.propdrwxr-xr-x root root 2011-03-08 16 43 devlrwxrwxrwx root root 2011-03-08 16 43 etc - /system/etc-rwxr--r-- root root 103256 2010-10-29 16 59 init-rwxr--r-- root root 16856 2010-10-14 11 01 init.rc-rwxr--r-- root root 974 2010-10-14 11 00 inshaldrwxrwxrwx system system 2031-01-03 15 04 nanddr-xr-xr-x root root 1970-01-01 09 00 procdrwxr-xr-x root root 2010-07-26 18 33 sbind--------- system system 2011-03-08 16 43 sdcarddrwxrwxrwt root root 2011-03-08 16 43 sqlite_stmt_journalsdrwxr-xr-x root root 1970-01-01 09 00 sysdrwxrwxrwx root root 2010-10-29 20 27 systemd--------- system system 2011-03-08 16 43 udisk あとはadbコマンドを利用して端末を操作可能となる。 ついでですが、こんなバッチとか作っとくと良いかな? @echo offif "%1" == "" (@echo NG 引数が足りない) else (adb devicesadb -d tcpip 5555ping localhost -n 5 nuladb connect 192.168.1.%1 5555adb devices) 任意の名前で保存。拡張子は当然『bat』。 見たら分かるが、8行目でconnectしてる。このとき引数でもらったIP Addressを使用。セグメントが異なる場合はイイ感じに書き換える必要がある。 7行目でping飛ばしてんのはwait代わり。連続して実行させるとconnectで失敗する。pingは1sec毎に実行されるので、都合5secのwaitになる。こんなに要らんと思うが、一応安全にね。 8行目を |adb connect 192.168.1.%1 5555|→|adb connect %1 5555|ってしちゃうのが良いかな? とりあえず、こんな感じでbat組んだら少し楽になると思う。 ■有線LAN 更新日: 2011年03月23日 (水) 10時27分43秒 名前 コメント すべてのコメントを見る
https://w.atwiki.jp/yasrun/pages/83.html
鼻と花粉の当たり判定を加えて、 ある程度当たるとゲームオーバーになるようにしました。 鼻のライフ(?)を左にメーター表示しました。 これでゲームとしては一応できあがりましたが、 あとは難易度の調整が必要そうですね。 今のままだと適当にやっていてもそれなりの点が とれてしまうので。 スクリーンショット ソース ※前回から変わった部分のみ。 KafunWarsView.java Nose.java パッケージファイル KafunWars.apk
https://w.atwiki.jp/ts2ts/pages/72.html
スマホとタブレットついに両方アンドロイドになったので アプリも増えて覚えるのが品雑になったので覚書。 タブレットのみオススメ ime NICOWNNG 多分打てるならタブはこれのjis50音入力がポータブル単体最速だと思う タブ スマホ カレンダー ジョルテ 取り敢えず標準か・・ ホームアプリ luncher7 winphoneのような奴ただ電力が・・ go luncher とりあえずコレを使ってます スキンはスケッチ動作も軽い ツール noled 本体にLEDが無い物の救世主モニターをledとして小さい点で告知 050plus まだ能力不足ですが月額固定で番号取得が出来るipフォン wifi file exploder 接続はしやすいがブラウザー使うので操作感が微妙かな king office 英語版が実は編集も何でもできるという・・・ 音楽プレイヤー
https://w.atwiki.jp/wikiroid/pages/35.html
作者 Hiroyuki Narazaki URL http //www.narazaki.info/tuboroid/ Ver 0.2.2.30.16 言語 日本語
https://w.atwiki.jp/androiddevicesmatome/pages/23.html
Google Nexusシリーズ Nexusシリーズ 【ねくさす しりーず】 シリーズ一覧 概要 スマートフォンシリーズ タブレットシリーズ 時系列 シリーズ一覧 端末名 発売日 OS SoC メモリRAM/ROM ディスプレイ カメラ画素数背面/前面 Antutu 総合 国内発売 メーカー(*1) 概要 スマートフォンシリーズ Nexus One 2010年1月 A.2.1→A.2.3 Samsung Exynos 3 SingleS5PC110 1.0GHzシングルコア 512MB/512MB AMOLED/SLCD3.7inchWVGA 5MP/ - (4927)(*2) × HTC 世界で初めてAndroid 2.1を搭載し、Googleが自らサポートするスマホ。薄さは11.5mmと当時としてはかなり薄く、重さは130gとかなり軽い。Audience社によるアクティブノイズキャンセリング機能が搭載されており、iPhoneシリーズよりも一足先に音声入力機能を利用できる。性能に対しては評価が高かったものの、それ以外は他の端末に劣るなどで、販売台数はあまり伸びなかった。 Nexus S 2010年12月 A.2.3→A.4.1 Qualcomm Snapdragon S1QSD8250 1.0GHzシングルコア 512MB/16GB SuperAMOLED/SLCD4.0inchWVGA 5MP/0.3MP 2878 × Samsung 『Samsung Galaxy S』がベース。Android 2.3から新たにサボートするNFCなどの機能を搭載したスマホ。SPHERESプログラムの一環として、NASAが国際宇宙ステーションで使用することを認定した最初の商業用スマートフォン。ディスプレイによって有機ELモデルと液晶モデルが、移動通信システムによって3Gモデルと4Gモデルが販売された。のGoogleはこれまで3回にわたって製造を担当するパートナーにHTCを採用してきたが、今回からはSamsungを採用する。 Galaxy Nexus 2011年11月 A.4.0→A.4.3 Texas Instruments OMAP4460 1.2GHzデュアルコア 1GB/16,32GB SuperAMOLED4.65inchHD 5MP/1.3MP 12479 d Samsung GalaxyとNexusの両ブランドの端末として発売されたスマホ。端末本体やソフトウェアの開発には両ブランドの開発エンジニアが共同で行われた。ブラジル向けには商標の問題から『Galaxy X』という名前で発売された。他と比べて大型バージョンアップデートの提供された回数は少なく、そのせいかカスタムROMの数はAndroid端末の中でもトップクラス。3Gモデルと4G LTEモデルがある。 Nexus 4 2012年11月 A.4.2→A.5.1 Qualcomm Snapdragon S4 ProAPQ8064 1.5GHzクアッドコア 2GB/8,16GB True HDIPS Plus4.7inchWXGA 8MP/1.3MP 24790 ○ LG 発売から3ヶ月で100万台を売り上げた『LG Optimus G』が世界中で評価されたことをきっかけにLGが製造を担当したスマホ。ベースの『LG Optimus G』から多くの特徴が受け継がれている。高いハードウェアスペックやワイヤレス充電の対応などの特徴があるが、何よりもそれらの機能を詰め込んだハイエンド端末が299ドルで販売されたことはニュースサイトなどでも大きく取り上げられた。 Nexus 5 2013年11月 A.4.4→A.6.0 Qualcomm Snapdragon 800MSM8974 2.26GHzクアッドコア 2GB/16,32GB True HDIPS Plus4.95inchFHD 8MP/1.3MP 30299 ○/y LG 前モデルと同じく製造元はLGで、ベースとなっているのは『LG G2』。同時期に発売されたライバル機と比べてもトップクラスの性能を誇るが、値段は300ドル台に抑えられている。欠点が少なく、機能性や安定性も高いため、前モデルと同じように好調な売れ行きであった。「最も良いNexusは何か」というアンケートでは4割近くの票を獲得して見事1位を獲得した。 Nexus 6 2014年11月 A.5.0→A.7.1 Qualcomm Snapdragon 805APQ8084 2.7GHzクアッドコア 3GB/32,64GB AMOLED5.96inchQHD 13MP/2MP 50095 ○/y Motorola これまでラインナップしてきた端末とは方向性が異なる高価格帯のスマホ。ディスプレイ性能などを大幅に進化させ、単なるリファレンス機としての用途以外でもしっかり使える仕様だが、値段は649ドルと今までのモデルより2倍ほど高い値段設定だった。製造はGoogleの傘下から抜けた直後のMotorolaが担当する。 Nexus 5X 2015年10月 A.6.0→A.8.1 Qualcomm Snapdragon 808MSM8992 1.8GHz+1.4GHzヘキサコア 2GB/16,32GB IPS5.2inchFHD 12.3MP/5MP 52342 ○/d/y LG Nexusシリーズ最後の端末。『Nexus 5』の後継モデル。値段は379ドルと安価ながら、高精度な指紋認証機能やハイスペックな64bitプロセッサ、高価格帯のライバル機とも見劣りしない高画質カメラなど、そのコストパフォーマンスの高さはまさに親譲り。普及し始めたUSB Type-Cを外部接続端子に採用する。 Nexus 6P 2015年10月 A.6.0→A.8.1 Qualcomm Snapdragon 810MSM8994 2.0GHz+1.55GHzオクタコア 3GB/32,64,128GB AMOLED5.7inchQHD 12.3MP/8MP 60872 ○/s/y Huawei Nexusシリーズ最後の端末。『Nexus 6』の後継モデルであり、ディスプレイの性能は解像度や駆動方式は同じであるものの、少し小型化した5.7インチのものを採用している。筐体にはNexusシリーズ初のメタルユニボディ(1枚のアルミ板からの削り出し)を採用している。搭載されたSnapdragon 810は発熱に関して問題になったが、この端末では異常に発熱することはない。 タブレットシリーズ Nexus 7(2012) 2012年7月 A.4.1→A.5.1 NVIDIATegra 3 1.2GHzクアッドコア 1GB/8,16,32GB(*3) IPS7.0inchWXGA - /1.2MP 18862 ○ ASUS Androidタブレットの普及に大きく貢献したミッドハイレンジタブレット。ゲーミングに強いSoCなどを搭載しながらも、一万円台という採算度外視な価格設定で、元からのAndroidユーザーだけでなく、初めてAndroidを触るというライトユーザーにも売れたという、Android史上最大級の販売台数を誇る端末。Wi-Fiモデルと後発の3Gモデルが発売された。 Nexus 10 2012年11月 A.4.2→A.5.1 Samsung Exynos 5 Dual5250 1.7GHzデュアルコア 2GB/16,32GB Super PLS10.1inchWQXGA 5MP/1.9MP 24278 ○ Samsung タブレット史上最高の解像度を誇る10.1インチディスプレイを搭載したタブレット。デュアルスピーカーも搭載しており、動画視聴では他の端末では味わえない没入感を感じられる。発売開始日にハリケーン・サンディがニューヨークを直撃や、直前に発売された『Nexus 7 (2012)』のヒットなどで販売台数はそれほど伸びなかった。 Nexus 7(2013) 2013年7月 A.4.3→A.6.0 Qualcomm Snapdragon S4 ProAPQ8064 1.5GHzクアッドコア 2GB/16,32GB IPS7.0inchWUXGA 5MP/1.2MP 27525 ○ ASUS 2012年モデルに欠けていた部分を補った、完成度の高いミッドハイレンジタブレット。Wi-FiモデルとLTEモデルが同時発売された。ハードウェアは2012年モデルから大きく進化し、5.0GHzのWi-Fi通信、置くだけの無線充電、無線/有線での外部映像出力など、最新の端末にも採用されている機能を多く搭載されており、今なお高い需要がある。 Nexus 9 2014年11月 A.5.0→A.7.1 NVIDIATegra K1 2.3GHzデュアルコア 2GB/16GB (Wi-Fi)32GB (LTE) IPS8.9inchQXGA 8MP/1.9MP 59710 ○ HTC Android端末で初めて64bitプロセッサを搭載タブレット。SoCにはPS3やXbox 360を超えるグラフィック性能を持つTegra K1 (64bit)を、OSには新たに64bitに対応したAndroid 5.0を、ディスプレイには高輝度で視野角にも優れたIPSパネルをそれぞれ搭載し、ゲーマーには最良の選択肢の一つとなった。 (リスト最終更新日 2018/10/1) + 出典元 スマートフォン Nexus One スペック Nexus One ベンチマーク *1 Nexus S スペック Nexus S ベンチマーク(v.2.3.1) Galaxy Nexus スペック Galaxy Nexus ベンチマーク(v.5.2.0) Nexus 4 スペック Nexus 4 ベンチマーク(v.5.2.0) Nexus 5 スペック Nexus 5 ベンチマーク(v.5.7.1) Nexus 6 スペック Nexus 6 ベンチマーク(v.5.7.1) Nexus 5X スペック Nexus 5X ベンチマーク(v.5.7.1) Nexus 6P スペック Nexus 6P ベンチマーク(v.5.7.1) タブレット Nexus 7 (2012) スペック Nexus 7 (2012) ベンチマーク(ver.5.6.2) Nexus 10 スペック Nexus 10 ベンチマーク(v.5.6.1) Nexus 7 (2013) スペック Nexus 7 (2013) ベンチマーク(ver.5.7.1) Nexus 9 スペック Nexus 9 ベンチマーク(v.5.6.1) 概要 「純粋なAndroid」としてのユーザーエクスペリエンスを提供する役割を持ったOEM・ODMシリーズ。基本的に端末本体及び周辺機器の設計・製造をGoogleが選定したハードウェアメーカーが行い、発表・販売・サポート・ソフトウェアアップデートをGoogleが行う。Android端末のリファレンス機として発売されるため、開発者らは"Nexus機に対応させること"を念頭に置いてAndroid OS・アプリの開発を行う。そのため、ブートローダーのアンロックやマルチアカウント機能(Android 4.2以降)など、一般的なAndroid端末にはない機能が多く搭載されている。セキュリティパッチの提供期間については、販売開始から3年、もしくはGoogle Playでの販売終了から18ヶ月(1年半)のいずれかである。Googleが自らAndroid端末を販売する具体的な目的としては、先述のユーザーエクスペリエンスの他に、Android端末の普及、デベロッパーのためのテスト機、他社が行うAndroid端末の開発や設計のお手本、発展途上にある市場の開拓、世界の各市場のユーザー傾向の把握、新しくリリースする予定の次期バージョンのテストリリースなどが挙げられる。これらの目的に関して、Androidの技術担当副社長Andy Rubin氏は「端末の販売で多少の利益が出る可能性はあるが、われわれはそれを狙っているわけではない。われわれの主要なビジネスは広告だ」とインタビューで話している。販売はSIMフリー版がGoogle Play Storeから、場合によって各キャリアからSIMロック版が発売される。OSにはAOSPから必要最低限の端末向けのカスタマイズがなされたものであるため、キャリアやサードパーティによるプリインストールアプリは一切仕込まれていない。「Android Oneシリーズ」「Pixelシリーズ」と同様に、OSのアップデート保証期間が策定されているシリーズであり、その期間は原則発売日から2年以上である。ハードウェア仕様の共通点としては、SoCには最新または1つ型落ちのハイスペックを採用し、Android OSの新バージョンが新たにサポートする機能を多く搭載するが、多くのハイエンド機にあるおサイフケータイや防水・防塵、ハイレゾ再生、microSDなどの外部メモリ、ワンセグなどの機能には対応していない。 価格の傾向 『Nexus 5』までのNexusのスマートフォンシリーズは、"Android端末群の代表"として、また"リファレンス機"として、Androidというソフトウェアをより多くのユーザーに体験してもらうことに重点を置いている。そのため、Androidを快適に動かすためにミッドハイ〜ハイエンド仕様のSoC・RAMは搭載するものの、同時期に発売されるライバル機と比べて機能面など多くの部分で妥協があり、それによって低価格を実現し、無駄な機能が排除された端末を求めるユーザーに人気を得てきた。だがその妥協点の改善を求める声も少なくなく、Nexusシリーズが掲げる目標もいくつか達成したこともあり、次の『Nexus 6』は高解像度の大画面ディスプレイを搭載し、RAMも大容量になった。その分値段は大きく上がったが、低価格モデルを求める声も多かったことから生産数も少なかったと思われる。だが、実際に『Nexus 6』発売後は低価格モデルを求める声が思ったより多くなってきたことから、その次のモデルは高価格モデルと低価格モデルの2機種が同時発売された。 Miracastについて Android OSはバージョンを上げるごとに便利機能を増やし進化していっており、Nexus機もバージョンアップを行うたびにその恩恵を受けて進化しているのだか、唯一Nexus機のみ削除された便利機能がある。それが、無線外部映像出力機能の「Miracast」である。Android 4.1からOSレベルで正式にサボートされたこの機能だが、Android 6.0を搭載した『Nexus 5X / 6P』は発売の時点でMiracastはなく、『Nexus 5 / 6 / 7 (2013) / 9』もAndroid 6.0にアップデートするとMiracastがなくなる。発売時にMiracastがあった端末はアップデート後はroot化などによって復活させることが可能だが、発売の時点でなかった2機種はカスタムROM等を導入する必要があることから、その2機種ではOSビルド時に無効化したものではなく、完全に削除されたと思われる。機能削除の背景には、その2機種とAndroid 6.0のリリースと同時期に『Chromecast(第2世代)』が発売されたことが関係している。MiracastはGoogleの他にもMicrosoftやASUSなど、親機・受信機の両方で様々なメーカーが関わっているが、ChromecastはGoogleが独自で開発したデバイスであるため、市場での影響力を高めたいGoogleにしてみればMiracastよりもChromecastのユーザーを増やしたいと考えるのは当然である。そのため、Android 6.0以上の端末にはデフォルトでクイック設定パネルにChromecast接続用の「キャスト」がある。 シリーズ終焉 Goggleは2016年10月に『Pixel』『Pixel XL』を発表したが、その直後にNexusシリーズの終焉が公式twitterでアナウンスされた。後継のPixelシリーズは、Nexusシリーズと違い、設計から販売までのほぼ全てのプロセスをGoogleが行い、ハードウェアメーカー(現時点ではHTCのみ)はあくまで端末を製造する"工場"として機能する。Pixelシリーズはハイエンド路線であり、カメラやディスプレイ等でも発売時点で最高レベルの仕様だが、値段も全モデルで600ドルを大きく上回っており、Nexusシリーズの役割が「より多くの人々にAndroidを使ってもらう」であるならば、Pixelシリーズは「Androidで最高の体験をしてもらう」という、Nexusシリーズの次の段階に変わった。Nexusシリーズの最大の役割の一つである"Android端末の普及"がある程度達成され、人気のNexus機と同じ300ドル台の機種が増えてきたので、今度は新たにハイエンドモデルシリーズをやろうとなったのだと考えられる。また、新たなリファレンス機であるPixelシリーズは日本向けには販売されておらず、Androidの新バージョンのテスト版や、Googleのモバイル端末向けの新しいサービスを最速で体験できる端末が日本にはないということになる。そのため、日本でそれらを体験するには、電波法を犯してPixelシリーズ端末を使うか、数ヶ月遅れてAndroid Oneシリーズなどで体験するかしかない。 スマートフォンシリーズ Nexus One Nexusシリーズ最初のスマホ。2010年1月5日に「Our new approach to buying a mobile phone(われわれが提案する携帯電話を購入する新しい方法)」というタイトルの公式ブログで発表された。ここでは自社ブランドの端末を開発したのは「Androidの可能性を提示するため」と語っている。2009年12月、Googleは「Nexus One」という名称の商標申請をしたが、2008年にIntegra Telecomが「NEXUS」という商標(3554195)を登録していることから、申請は却下された(後に申請が通っている)。発売には実験的要素も多かったことからか、機能はやや不安定。本体にある2つのマイクを使うアクティブノイズキャンセリング機能が搭載されており、後にiPhoneシリーズでも採用されるAudience社の技術を使っているので、iPhoneシリーズよりも一足先に精度の高い音声入力機能を利用できる。2010年7月26日に製造元のHTCは、本体に搭載するSamsung製AMOLEDディスプレイの供給不足により、ソニー製Super LCDディスプレイに変更すると発表した (*4)。販売開始からの一週間に2万台を売り上げるなど出だしは好調だったものの、ユーザーはGoogleからオンラインで購入する方法に慣れていなかったこと、アメリカのキャリア向けには最大手のATやVerizonではなくT-Mobileの独占販売だったこと、近いスペックの端末よりも高価な529米ドルという価格で販売されたことなどの原因から、発売開始から74日後の販売台数は13.5万台と、他の端末と比べても伸び悩んでいた。 Nexus S SPHERESプログラムの一環として、NASAが国際宇宙ステーションで使用することを認定した最初の商業用スマートフォン。開発には、TIME誌の2010年の「Top 10 Gadgets」に『iPad』に次いで2位となった『Samsung Galaxy S』がベース。Android 2.3から新たにサボートするNFCなどの機能を搭載しており、NFCはAndroid 4.0へのアップデートによってAndroid Beamが使えるようになった。発表ではディスプレイには有機ELを搭載しているとしたが、ヨーロッパ(イギリスを除く)やインドなどの地域に向けたモデルではソニー製のSuper LCDディスプレイが搭載されている。また、アメリカのキャリアからは、半年遅れでSprintからも発売されているが、SprintモデルはWiMaxネットワークにも対応する。Googleはこれまで3回(HTC Dream/ HTC Magic/ Nexus One)にわたって端末本体の製造を担当するパートナーにHTCを採用してきたが、今回からはSamsungを採用する。この理由は定かではないが、この端末の半年前に発売された『Samsung Galaxy S』が大ヒット(後に2000万台を超えるセールスを記録する)したことが影響したと考えられる。 Galaxy Nexus Nexusシリーズとしては初めて日本向けにも発売されたスマホ。発売前にティザー映像を公開する際、10月11日に公開する予定であったが、10月5日のスティーブ・ジョブズの逝去を受けて、10月19日に公開を延期した。Dragontrailの曲面ガラスを使用したディスプレイの解像度はHDと高解像度で、同じSamsungから発売された『Galaxy S II』よりも解像度が高い。この端末には、グローバル向けの2G/3Gモデルと、アメリカのキャリアのVerizonとSprint向けの4G LTEモデルの2つのモデルがあり、4G LTEモデルやドコモなどの一部地域のモデルは最終のバージョンアップデートがAndroid 4.2までである。 Androidのバージョンアップデートが提供される期間が長いNexusシリーズだが、この端末は4.0→4.2/4.3と、可能な大型バージョンアップデートの回数が少ない。理由としては、Android 4.4がリリースされた時点で18か月のバージョンアップデートの供保証期限を過ぎていることや、搭載されているSoCを製造するTexas Instrumentsがスマートデバイス向けのSoCの開発を事実上完全に停止したことが挙げられる(Android 4.3のリリース時には既にOMAPシリーズ自体ストップしていた)。ちなみに、この端末のユーザーであったMax Duckwitz氏は、Android 4.4へのアップデートを提供のもらうようにGoogleに請願し、32,998人の賛同者を得た。このようなアップデート回数の少なさの影響か、カスタムROMの数はNexusシリーズの中でも特に多い。また、評価は良かったものの販売台数はそこまで良くなく、Samsungの弁護士はこれを「極小」と表現している。なお、この端末のアメリカへの販売は、Appleとの特許侵害訴訟の差し止め命令によって6月29日から7月6日まで輸入販売が一時的に禁止されたため、その影響もある。 Nexus 4 ハイスペックながらも高い安定性と低めの価格設定によって高い評価を得たスマホ。なお、Nexusシリーズでは後に『Nexus 5X』や『Nexus 6P』など、端末名にディスプレイサイズを使ったモデルが存在するが、この端末ではNexusシリーズで4機種目という意味で、名前には"4"と付けられている。ベースとなった『LG Optimus G』は、最新のハイスペックSoC「Snapdragon S4 Pro」を世界で初めて搭載し、高い完成度のディスプレイやカメラを搭載するなど、LGの高い技術力をモバイル市場に見せつけたものであった。低価格などの点が好評で発売から3ヵ月で100万台を売り上げた『LG Optimus G』はGoogleでも高く評価され、4つ目のNexus端末の製造にはLGが選ばれることとなった。だが、『LG Optimus G』が対応していたLTE通信には非対応となっている。 ベースの端末が大ヒットしたのと同様にこちらもかなり販売台数を伸ばしており、発売の翌年だけでも300万台を売り上げた。販売台数を伸ばした理由としては、高いハードウェアスペックやワイヤレス充電の対応などの点が挙げられるが、本当の理由としては値段である。初期価格は299ドルであり、1年後には199ドルにまで値下げされた。先述の通りこの端末の評価は高く、Nexusシリーズで最高のスマホと言われている。また、高い注目度によって、Google Playでの受注開始とともに販売ページのアクセスが集中し、ページの動作が不安定になり、落ち着いた頃には初回出荷分の販売終了。再入荷分の発売時も同じように販売ページが機能せず、安定し始めたころには「出荷は8週間後」と2012年の年末のクリスマスに間に合わない状態となっていた。品薄は相変わらずで、米Google Playでは翌年の1月も8GBモデル・16GBモデルともに「在庫切れ」が続いていた。このことについて日本のニュースサイトは『(2012年の)米国での年末商戦で最も売れ行き好調だったスマートフォンがAppleの「iPhone 5」なら、最も入手困難だったスマートフォンはGoogleの「Nexus 4」だった。』と表現した。 Nexus 5 「ハイエンドモデルを低価格で提供する」という前モデルと同じ路線で再び大ヒットしたスマホ。前モデルと同じく製造はLGが担当している。ベースとなった『LG G2』は、LGスマホの再出発として、Gシリーズ本格始動の第一弾として発売されたモデルで、背面ボタンの採用・光学手ブレ補正・ノックオンによる画面オンオフ・ベゼルレスデザイン・スマホ初(*5)のハイレゾ音源対応など、革新的な機能が多く採用されており、完成度はかなり高いモデルである。だが前モデルと比べて、ベースであると言ってもベース機との共通点は少なく、デザインやディスプレイなどはほとんど別物である。本体下部の緩やかなカーブや、130gという軽さ、手触りが良く側面に向けてなだらかな曲線がついた背面パネルなどの採用により、本体の持ちやすさの評価は高い。前モデルからさらにスペックを上げ、同時期に発売されたライバル機と比べてもトップクラスのスペックを持っているが、値段は349ドルと低価格であり、やはり売れ行きは好調だった。Nexusシリーズ終焉の後に行った「最も良いNexusは何か」という3万人以上が参加したアンケートでは、39%でダントツの1位を獲得した。 Nexus 6 これまでラインナップしてきた端末とは方向性が異なる高価格帯のスマホ。これまでGoogleが傘下に収めていたが、このモデルが発売される前にLenovoへの売却が完了したMotorolaが製造を担当している。ベースになった端末はないが、同時期に発売された『Motorola Moto X (2nd generation)』とデザインなど多くの共通点が存在する。また、中国企業に買収されたMotorolaは、中国市場への再参入するため、中国向けには『Motorola Moto X Pro』として名前を変え、プリインストールアプリなどを一部変更して販売された。ハードウェア仕様はこれまでのモデルよりも大きく強化されており、SoCには世界初(*6)のSnapdragon 805が搭載されており、RAM容量は3GBである。ディスプレイ仕様は、QHD・5.96インチ・有機ELを採用しており、大画面ながらも493ppiと高いピクセル密度を実現している。価格は649ドルと前モデルから大幅に上がり、ライトユーザーは手を出さないと考えたのか、初期製造分は前モデルと比べても大きく絞られており、『Nexus 4』と同じようにアメリカのPlay Storeでは予約開始から僅か30分足らずで完売してしまった。これについてはGoogleのCFOであるPatrick Pichette氏が「Nexus 6は需要に見合うだけの十分な供給量を確保できなかった」と述べた。最終的にAndroid 7.1.1までバージョンアップが提供されたが、バージョンアップ後の一部の端末にAndroid 7.0が誤配信される現象が発生し、このダウングレードをしてしまうと端末が起動せずソフト文鎮化、初期化をせざる得ない状態に陥るとのこと。 Nexus 5X Nexusシリーズ最後のスマホ。『Nexus 6P』との2機種同時発売。手頃な価格と品質を兼ね備えた『Nexus 5』の後継モデルであり、製造元も同じLG。価格も379ドルとほぼ据え置きのまま、64bitプロセッサ搭載や指紋認証機能搭載など、多くの部分で進化している。OSには新たに指紋認証に対応したAndroid 6.0を搭載する。スリープ解除機能の「Nexus Imprint」で使われる本体背面の指紋センサーはスリープ解除だけでなく、Playストアでの本人認証や、スワイプで通知領域の表示(Android 8.0のアップデートで対応)などの機能もある。複数の事業者によるWi-Fi信号とセルラー信号を組み合わせて持続的なデータ接続を確保するGoogleのサービス「Project Fi」にも対応している。これまでのNexusシリーズのカメラといえば、お世辞にも他社のフラグシップモデルより優れているとは言えない性能だったが、今回は1230万画素のソニー製の高品質CMOSイメージセンサー「IMX377」が搭載されており、カメラの起動時間や撮影時間には少し難があるものの、明るく鮮明な写真が撮れる。RAMは同時期のハイエンド機と比べると少ない2GBだが、SoCには型落ちとはいえハイスペックなSnapdragon 808が搭載されている。外部接続端子には同年に普及し始めた新規格のUSB Type-Cを採用するが、USB Type-Cの最大の利点の一つであるUSB 3.1には非対応で、転送速度は従来のmicro USBと同じUSB 2.0レベルである。 Nexus 6P Nexusシリーズ最後のスマホ。『Nexus 6P』との2機種同時発売。Nexusシリーズ初のメタルユニボディ(1枚のアルミ板からの削り出し)を採用している。SoCには『Xperia Z4』や『ARROWS NX (F-04G)』の発熱問題の原因として問題になったSnapdragon 810を搭載しているが、特に問題はない。カメラは『Nexus 5X』とほぼ同じスペックだが、こちらは光学式手ブレ補正機能を搭載している。『Nexus 6』の後継モデルであり、ディスプレイの性能は解像度や駆動方式は同じであるものの、少し小型化した5.7インチのものを採用している。RAMには高速転送のLPDDR4を採用する。 タブレットシリーズ Nexus 7 (2012) Androidタブレットの普及に大きく貢献し、Androidの発展に重要な役割を果たした7インチタブレット。当時としてはミドルハイクラスの性能を搭載しながらも、一万円台という採算度外視の値段設定で、発売から3カ月後の国内版の発売の時点で既に100万台に達していたという。Benedict Evans氏の情報によれば、国内版発売の半年後には全世界の合計販売台数は700万台に迫る勢いだったという。これ程までの大ヒットの理由は明確ではないが、それについて書いている後述はあくまで筆者の想像だと思っていただきたい。 この端末が発表された時はタブレット市場というのはiPad一強の状態だった。この端末の発表より以前のAndroidは、バグやフリーズなどが多発する、非常に不安定で完成度の低いOSだった。しかし、この端末の発売の1年前に発売された『Galaxy Nexus』は、Android 4.0を搭載しており、それ以前のバージョンよりも格段に安定性が上がっていた。この『Galaxy Nexus』は日本で初めてキャリアを介して販売されたNexusシリーズモデルであり、国内のAndroid全体に対するイメージアップに繋がった。それと同時にNexusというブランドのイメージアップにも繋がり、『Galaxy Nexus』の次に発売されたこの端末は、価格の安さもあり、ライトユーザーにAndroidを触らせる機会を与えた。 この端末はSoCに、ゲーミングPCのGPUメーカーとして有名なNVIDIA製のものを採用している。なのである程度コアなPCゲーマーなら、スペック表を一目見て、すぐにこの端末がゲーミングを意識したモデルだとわかるだろう。また、前述の通りNexusシリーズの端末は、極力プリインストールアプリはGoogle製のものだけというシンプル環境(メーカー製アプリを多用しない)でリリースされたことや、ブートローダーの解除機能を標準搭載するなど、コアなゲーマーにカスタムする魅力を備えている。そこに、ハイスペックの、スマホでは無い、タブレット端末としてリリースしたことが、時代の流れとベストマッチングしたと思われる。 この端末は前述の通りOEM製造だが、この場合、ハード製造業者とソフト製造業者が違うことで、バグの想定量が不完全になりやすい。そのため、単純なハードの初期不良(コスト低減のための非統一のパーツ採用によるロッド違い・人為的ミスなど)や、ソフトとの整合性において、リリース後に発覚した不具合やユーザー操作での想定外のバグなどで、初期ロッドでは、返品または修理交換したものが多数出たと思われる。その再生品、いわゆる「リファービッシュ品」が安価で市場に流れたのも、ライトユーザーの手にこの端末が渡った理由の一つだと思われる。 Nexus 10 高い解像度を誇る10.1インチディスプレイを搭載したタブレット。製造はSamsungが担当する。2012年10月29日に『Nexus 4』とAndroid 4.2とセルラー版『Nexus 7 (2012)』と共にニューヨークのカンファレンスで発表する予定だったが、当日にハリケーン・サンディがニューヨークを直撃したため、Google公式ブログから発表された。また、他の国では予定されていた発売日に販売開始できたが、日本では実店舗販売してくれる店が発売日に見つからなかったこと(憶測)などから発売が大きく遅れた。搭載されているディスプレイは、従来より視野角が広いSamsung独自開発のSuper PLS技術を採用し、解像度は2560×1600ドットと2018年3月の現時点でタブレット史上最高。ピクセル密度もタブレットとしては最高レベル(*7)の326ppiである。デュアルスピーカーを搭載しているので、動画の視聴などではこれまでのモバイル端末とは違った没入感を感じられる。価格設定は『Nexus 7 (2012)』と比べて強気ではないものの、他のハイエンドタブレットよりは安い。全体的な評価としては、microSDなどの拡張性が低いことやセルラー機能がないことなどが指摘されたものの、高解像度ディスプレイや基本性能の高さなどは評価され、賛否両論あったものの全体的には肯定的だった。 Nexus 7 (2013) 前機種の2012年モデルから大きくスペックアップしながらも、採算度外視の価格の低さを維持した7インチタブレット。OEM製造は前モデルと同じASUSが担当。Android端末で唯一、メジャーアップデートが4度配信された端末。発売時には、Qualcomm製の次世代SoC「Snapdragon 600/800」が発売されていたが、低価格化のため、その前の世代の「Snapdragon S4 Pro」を採用している。「Snapdragon S4 Pro」は、ミッドハイレンジクラスの次世代SoC「Snapdragon 600」の定格1.7GHzよりも低い1.5GHzのもので、SoCのスペックとしては最新のものに劣るものの、オプション類がほぼ一切ない、純粋なOSを搭載していることによって、実際のレスポンスはかなりよい。Wi-Fi版は二万円台、LTE版は三万円台という低価格でありながら、10時間近くの連続使用時間を発揮するバッテリー、5.0GHzに対応したWi-Fi通信、無線/有線の両方に対応した外部映像出力 (ミラーリング)、300gを切る携帯性の良さ、置くだけのワイヤレス充電技術「Qi」への対応など、最新機種にも多く採用されている機能や技術を多く採用し、今なお中古市場での需要は高い。タブレットには珍しくGPS機能があるので、「Android Auto」を使って車載ナビとして使う人も少なくない。 この端末は使い方次第では未だにバリバリ使える長寿命モデルだが、売上は前モデルと比べて伸びなかった。その理由として価格が挙げられる。前モデルはあらゆる部分でコストカットされていたが、このモデルでは全てにおいて完成度が高い。なので価格も自然と上がっている。この完成度の高さは、Android端末を使いこなしている層には好評だったが、前モデルで「試しにAndroidを使ってみたい」といったライトユーザーにとってはオーバースペックであり、ただ単に値上がりしただけという感覚に近かった。なので前モデルからの価格上昇はヘビーユーザーは肯定的だったが、ライトユーザーはあまり賛同的ではなかった。ちなみにその頃のライトユーザーには、このモデルとほぼ同じ時期にリリースされた『MeMO Pad HD7』がよく売れた。 Nexus 9 シリーズで初めて64bitプロセッサを搭載したタブレット。製造元は『Nexus One』以来となるHTCが担当する。高価格な『Nexus 6』と同時期に発売されたが、こちらは前述の低価格を維持しており、高性能なSoCを搭載していながらも399ドルと低価格であった。搭載されているSoCのTegra K1 Denverは、Android端末向けのSoCとしては世界初の64bitプロセッサであったため、この端末は発売当初のベンチマークのスコアでは同時期のハイスペック機と同等レベルだったが、ベンチマークアプリが徐々に64bitプロセッサの測定の最適化もし始め、その時点のベンチマークテストで同時期のハイスペック機の1.5倍に迫るスコアを叩き出していた。現在はこの端末より2年あとに発売されたハイエンド機とも負けず劣らずのスコアであり、399ドルという価格設定がいかに凄いかを物語っている(なお、このページの一覧表では他の端末と基準を統一するため、64bitプロセッサの測定に最適化される前のAntutu Benchmark 5.6.1のスコアを記載している)。ディスプレイには、1536x2048ドットという高解像度の8.9インチディスプレイを採用しており、前述の『Nexus 10』にも迫る320ppiという高いピクセル密度を誇る。本体には高い質感を与えるラバー調の手触りのものを採用しているが、425gと少し重め。 時系列 Androidバージョン別 OS コードネーム 公開 1.0 2008/09 1.0 1.0 1.1 2009/02 1.1 1.1 1.5 Cupcake 2009/04 1.5 1.5 1.6 Donut 2009/09 1.6 1.6 2.0 Eclair 2009/10 2.0 2.0 2.1 2010/01 Nexus One 2.1 2.1 2.2 Froyo 2010/05 2.2 2.2 2.3 Gingerbread 2010/12 Nexus S 2.3 2.3 4.0 Ice CreamSandwich 2011/10 GalaxyNexus 4.0 4.0 4.1 Jelly Bean 2012/07 4.1 Nexus 7(2012) 4.1 4.2 2012/11 Nexus 4 4.2 Nexus 10 4.2 4.3 2013/07 4.3 Nexus 7(2013) 4.3 4.4 KitKat 2013/10 Nexus 5 4.4 4.4 5.0-5.1 Lollipop 2014/11 Nexus 6 5.0-5.1 Nexus 9 5.0-5.1 6.0 Marshmallow 2015/10 Nexus 5X Nexus 6P 6.0 6.0 7.0-7.1 Nougat 2016/08 7.0-7.1 7.0-7.1 8.0-8.1 Oreo 2017/08 8.0-8.1 8.0-8.1 9.0- 9.0- 9.0-